require(["config"],function(){
	require(["jquery","header","template","cookie","footer"],function($,head,template,cookie){	
		head.done(function(){
			$(".header_c").remove();
			$("header").css("borderBottom","1px solid #ed1475")
		})
		//cookie插件配置
		$.cookie.json = true;
		//读取购物车cookie
		let products = $.cookie("products") || [];
		//判断购物车是否为空
		if(products.length === 0){
			$("table").hide().prev().show();
			return;
		}
		//购物车不为空
		$("table").show().prev().hide();
		const html = template("cart_temp",{products});
		$(".tb").html(html);
/**********************************************************************/
	//删除商品  删除cookie 删除dom
	$(".tb").on("click",".del",function(){
		//获取当前删除链接所在行
		const tr = $(this).parents("tr");
		//获取商品id
		const id = $(tr).data("id")
		//从数组中删除元素
		products = products.filter(function(curr) {
			if(curr.id==id)
				return false;
			return true;
		});
		//覆盖保存回cookie
		$.cookie("products", products, {expires:10, path:"/"});
		//删除dom
		$(tr).remove();
		//删除的商品时，购物车商品数量变化
		const amount = Number($(".cart").text()) - Number($(tr).find(".a_amount").val());
		$(".cart").text(amount);
		$(".mycart").text(amount);
		if(products.length === 0){
			$("table").hide().prev().show();
		}
		$("#ck_all").prop("checked",$(".ck_prod:checked").length === products.length);
		isquantity();
		calcTotal();
	});

/***********************************************************************/
//修改数量
	function modify(){


		$(".tb").on("click",".jia,.jian",function(){
			//商品行
			const tr = $(this).parents("tr");
			//商品id
			const id = $(tr).data("id");
			//行对应商品
			let prod = null;
			products.some(function(curr){
				if(curr.id == id){
					prod = curr;
					return true;
				}	
			});
			//修改prod商品的数量
			if($(this).is(".jia")){
				prod.amount++;
			}else{
				if(prod.amount<=1)
					return;
				prod.amount--;
			}

			//保存cookie
			$.cookie("products",products,{expires:10,path:"/"});
			//修改文本框的数量
			$(this).siblings('.a_amount').val(prod.amount);
			//显示小计
			isquantity();
			$(tr).find(".xiaoji").text("￥"+prod.amount*prod.price);
			const totalAmount = products.reduce(function(sum,curr){
					return sum += curr.amount;
				},0);
				$(".cart").text(totalAmount);
				$(".mycart").text(totalAmount);
			calcTotal();
		});
	}
	modify();
/**********************************************************************/
//文本框修改数量
		function modify_num(){
			//失去焦点之前获得的商品数量
			$(".tb").on("focus",".a_amount",function(){
				const a = $(this).parents("tr").find(".a_amount").val();
				$(".tb").on("blur",".a_amount",function(){
					//行
					const tr = $(this).parents("tr");
					//商品id
					const id = $(tr).data("id");

					//行所在商品
					let prod = null;
					products.some(function(curr){
						if(curr.id == id){
							prod = curr
							return true;
						}
					});
					
					//修改商品数量
					const _amount = $(this).val();
					// 正则判断 \d 数字字符 *至少出现一次
					if(!/^[1-9]\d*$/.test(_amount)){
						$(this).val(prod.amount);
						return;
					}
					prod.amount = Number(_amount);
					//保存cookie
					$.cookie("products",products,{expires:10,path:"/"});

					//显示小计
					$(tr).find(".xiaoji").text("￥"+prod.amount*prod.price);
					//修改商品时，购物车商品数量变化
					//失去焦点后获得的数量
					const b = Number(_amount);
					if(_amount.indexOf(0)===0)
						b = a
					const amount =	Number($(".cart").text()) - Number(a) + Number(b);
					$(".cart").text(amount);
					$(".mycart").text(amount);

					isquantity();
					calcTotal();
				});
			});
		}
		modify_num();
// /*****************************************************/
// //全选
		$("#ck_all").click(function(){
			//获取checkbox状态
			//原生 this.checked   getAttribute不能获取checked状态
			//jQ $(this).attr("checked")<==>getAttribute("checked") attr相当于getAttribute
			const status = $(this).prop("checked");//prop用于获取checked disabled true false等状态
			//设商品行checked状态  status 状态值为 true false
			$(".ck_prod").prop("checked",status);
			const totalAmount = products.reduce(function(sum,curr){
					return sum += curr.amount;
				},0);
			if(status===true){
				$(".cart_s").text(totalAmount);
				modify();
				//modify_num();
			}
			else
				$(".cart_s").text(0.00);
			isquantity();
			calcTotal();
		});
		//部分选中 选中状态的行数和添加到购物车商品的个数相等时就是全选，反之，部分选中
		
		$(".ck_prod").on("click",function(){
			$("#ck_all").prop("checked",$(".ck_prod:checked").length === products.length);		
			isquantity();
			calcTotal();
		});



		//定义函数，计算合计金额，在修改数量，删除，选中时都会计算合计，所以定义函数复用
		function calcTotal(){
			let sum = 0;
			$(".ck_prod:checked").each(function(index,element){
				// 当前遍历到行的小计
				const xiaoji = Number($(element).parents("tr").find(".xiaoji").text().slice(1));
				sum += xiaoji;
			});

			$(".heji").text(sum.toFixed(2));
		}
		// 结算商品数量计算
		function isquantity(){
			//改变结算上面的商品数量
			let sum = 0;
			//从checked状态的商品行里获取数量
			$(".ck_prod:checked").each(function(element){
				const a = Number($(this).parents("tr").find(".a_amount").val());
				sum+=a;
			});
			$(".cart_s").text(sum);
		}


	})
});